#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h> 
#include <time.h>
#include <pthread.h>
#define MAX 125

void error(const char *msg) {
	perror(msg);
	exit(0);
}

int main(int argc, char *argv[]) {
	int sockfd, portno, n;
	int v[MAX],i;
	struct sockaddr_in serv_addr;
	struct hostent *server;
	int buffer[8*MAX];
	if (argc < 3) {
		fprintf(stderr, "usage %s hostname port\n", argv[0]);
		exit(0);
	}
	portno = atoi(argv[2]);
	sockfd = socket(AF_INET, SOCK_STREAM, 0);
	if (sockfd < 0)
		error("ERROR opening socket");
	server = gethostbyname(argv[1]);
	if (server == NULL) {
		fprintf(stderr, "ERROR, no such host\n");
		exit(0);
	}
	bzero( &serv_addr, sizeof(serv_addr));
	serv_addr.sin_family = AF_INET;
	bcopy((char *) server->h_addr, (char *) &serv_addr.sin_addr.s_addr,
			server->h_length);
	serv_addr.sin_port = htons(portno);
	if (connect(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0)
		error("ERROR connecting");

	//printf("Please enter the message: ");
	bzero(v, sizeof(int)*MAX);
	//vetor que conterá os números gerados aleatóriamente
	srand(time(NULL));
	for (i = 0; i < MAX; i++) {
		v[i] = (rand() % 1000) + 1;
	}
	//fgets(buffer, 255, stdin);

	n = write(sockfd,v, sizeof(v));
	if (n < 0)
		error("ERROR writing to socket");
	bzero(buffer, sizeof(int)*8*MAX);
		n = read(sockfd, buffer, sizeof(int)*8*MAX);
	if (n < 0)
		error("ERROR reading from socket");
	printf("\nVetor Final:\n");
	for(i=0;i<(n/sizeof(int));i++){
		printf("%d ",buffer[i]);
	}
	//close(sockfd);
	return 0;
}
